package com.justnow.solution;

import java.util.ArrayList;
import java.util.Arrays;

public class Solution621 {

    /**
     * 方法一，排序来实现，https://leetcode-cn.com/problems/task-scheduler/solution/tong-zi-by-popopop/
     * @param tasks
     * @param n
     * @return
     */
    public int leastInterval(char[] tasks, int n) {
        int[] map = new int[26];
        for (char c : tasks) {
            map[c-'A']++;
        }

        // 正序排序，下标为25的元素对应的个数最多
        Arrays.sort(map);
        int time = 0;
        while (map[25] > 0) {
            int i = 0;
            //n+1为一轮
            while (i <= n) {
                if (map[25] == 0)
                    //说明已经没有任务需要执行了
                    break;
                if (i < 26 && map[25-i] > 0)
                    //即使不满足这个要求，time也要加1表示空闲一个时间单元！
                    map[25-i]--;
                time++;
                i++;
            }
            Arrays.sort(map);
        }
        return time;
    }

    public static void main(String[] args) {
        int[] a = {10, 9, 20, 3, 7};
        Arrays.sort(a);
        for (int i : a) {
            System.out.println(i);
        }
    }
}
